Schemalagd MQTT-kontroll
Det schemalagda MQTT-kontrollen är avsedd för schemalagda meddelanden i förväg. För livekontroll, se Live MQTT Control istället.
Denna guide hjälper dig att konfigurera MQTT på din SmartgridOne Controller för att fjärrstyra och övervaka installationer av batterier och solpaneler.
Vad du behöver
- SmartgridOne Controller med internetuppkoppling.
- MQTT-uppgifter: Detta kan begäras genom att skicka ett e-postmeddelande till support@eniris.be.
- Python-utvecklingsmiljö (eller någon annan MQTT-klient). Denna guide använder ett grundläggande exempel skrivet i Python för att komma igång med MQTT och skicka kommandon. Vi rekommenderar att använda Python för användarvänligheten, men vilken annan MQTT-klient som helst stöds.
Extra information
MQTT är ett snabbt kommunikationsprotokoll över internet. Det är ett publicera/prenumerera meddelandesystem som möjliggör en direktanslutning mellan din maskin och SmartgridOne Controller. Dina tillgångar klassificeras i sol-, batteri-, EV- och HVAC-grupper. För tillfället möjliggör denna integration kontroll per grupp, inte per enhet.
Första konfiguration (Startpunkt för nya användare)
Jag har en SmartgridOne Controller som jag vill konfigurera för MQTT Fjärrkontroll.
1. Kontrollera ditt nätverk
Se till att ditt nätverk tillåter mqtt-nätverkstrafik över port 1883. Du kan göra detta med kommandot:
nc -zv mqtt.eniris.be 1883
När detta kommando inte är tillgängligt kan du alternativt ladda ner och köra denna python-kod.
När du är osäker, konsultera din nätverksingenjör eller använd temporärt din telefons 4G/5G hotspot när anslutningsfel inträffar.
När port 1883 inte är tillgänglig från ditt nätverk erbjuder vi en backup på port 80. Detta kan konfigureras i din MQTT-klient vid ett senare steg i denna manual.
2. Lägg till dina enheter
Logga in i commissioning-gränssnittet och se till att enheterna är tillagda till SmartgridOne Controller.
3. Lägg till MQTT extern signal



4. Aktivera MQTT fjärrsignal
Välj alla enheter som du vill inkludera i MQTT Fjärrkontroll.

5. Fjärrsignalen är tillagd
MQTT Fjärrkontrollgränssnittet har nu aktiverats på SmartgridOne Controller.
Vi är nu redo att skicka några grundläggande kommandon med hjälp av ett enkelt exempel. Statuskolumnen visar om något kommando är aktivt.
Python demo-skript
En bra första startpunkt skulle vara att testa din nyinställda integration med ett enkelt exempel.
Denna testkod gör ett enkelt jobb med att kontinuerligt skicka följande schema:
- Batteri: Ladda med 5 kW i 15 minuter om 10 minuter
- Sol: Ställ in effekten på 0 kW i 30 minuter
SmartgridOne Controller svarar med ett bekräftelsemeddelande som innehåller det unika schemasidentifierare, eller ett felmeddelande.
Vi hämtar sedan nästa schema för båda enhetstyperna och bekräftar att kommandot var framgångsrikt.
Vänligen ladda ner filen nedan i din föredragna Python IDE. Fyll i ditt serienummer och MQTT-uppgifter och kör skriptet:
När ovanstående är framgångsrikt kan du fortsätta med att skicka andra typer av meddelanden. Alla meddelanden beskrivs nedan.
MQTT-dokumentation för att skicka kommandon
Denna sektion beskriver MQTT-meddelandets format och nyttolastkrav för att ställa in schemalagd kontroll av enheter inom SmartgridOne Controllers nätverk.
MQTT-ämnen
- Prenumerera på ämnet:
standard1/rp_one_s/remoteScheduleMetrics/<controller SN>
- Feedbackämne:
standard1/outbound/remoteScheduleMetrics/feedback/<controller SN>
Där <controller SN>
ska ersättas med det faktiska serienumret för den SmartgridOne Controller som du avser att kontrollera.
MQTT-meddelande typer
1. Ställ in schema (set_schedule
)
Skapar ett nytt schema för en enhetstyp.
{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Tidsstämpel>,
"message_type": "set_schedule",
"fields": {
"device_type": "<Enhetstyp>",
"node_id": "<Nod-ID>" (Valfritt),
"start_time": <Unix Tidsstämpel>,
"end_time": <Unix Tidsstämpel>,
"policy": "<Policy>",
"power_setpoint_w": <Inställning i watt>,
"replace_overlap": <True/False> (Valfritt) (standard=False),
}
}
Svar (Lyckad):
{
"requestTime": <Unix Tidsstämpel>,
"time": <Unix Tidsstämpel>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "set_schedule_ack",
"state": {
"schedule_id": <Schema-ID>,
"deleted_ids": <Schemalagda ID:n som raderades om replace_overlap=True>
},
"responseCode": 0
}
}
2. Hämta schema (get_schedule
)
Hämtar ett specifikt schema med ID.
{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Tidsstämpel>,
"message_type": "get_schedule",
"fields": {
"id": <Schema-ID>
}
}
Svar:
{
"requestTime": <Unix Tidsstämpel>,
"time": <Unix Tidsstämpel>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "get_schedule_ack",
"state": <Schema>,
"responseCode": 0
}
}
3. Hämta aktivt schema (get_active_schedule
)
Hämtar det för närvarande aktiva schemat för en enhetstyp.
{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Tidsstämpel>,
"message_type": "get_active_schedule",
"fields": {
"device_type": "<Enhetstyp>",
"node_id": "<Nod-ID>" (Valfritt),
}
}
Svar (Lyckad):
{
"requestTime": <Unix Tidsstämpel>,
"time": <Unix Tidsstämpel>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "get_active_schedule_ack",
"state": <Schema>,
"responseCode": 0
}
}
4. Hämta nästa schema (get_next_schedule
)
Hämtar nästa kommande schema för en enhetstyp.
{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Tidsstämpel>,
"message_type": "get_next_schedule",
"fields": {
"device_type": "<Enhetstyp>",
"node_id": "<Nod-ID>" (Valfritt),
}
}
Svar (Lyckad):
{
"requestTime": <Unix Tidsstämpel>,
"time": <Unix Tidsstämpel>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "get_next_schedule_ack",
"state": <Schema>,
"responseCode": 0
}
}
5. Hämta scheman (get_schedules
)
Hämtar alla scheman för ett specifikt datum.
{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Tidsstämpel>,
"message_type": "get_schedules",
"fields": {
"date": "<Datumsträng i formatet dd/mm/yyyy>"
}
}
Response (Success):
{
"requestTime": <Unix Timestamp>,
"time": <Unix Timestamp>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "get_schedules_ack",
"state": {
"schedules": [<Schedule>, ...]
},
"responseCode": 0
}
}
6. Hämta Framtida Scheman (get_future_schedules
)
Hämtar alla framtida scheman.
{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Timestamp>,
"message_type": "get_future_schedules",
"fields": {}
}
Response (Success):
{
"requestTime": <Unix Timestamp>,
"time": <Unix Timestamp>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "get_future_schedules_ack",
"state": {
"schedules": [<Schedule>, ...]
},
"responseCode": 0
}
}
7. Ta Bort Schema (remove_schedule
)
Tar bort ett specifikt schema med ID.
{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Timestamp>,
"message_type": "remove_schedule",
"fields": {
"id": <Schedule ID>
}
}
Response (Success):
{
"requestTime": <Unix Timestamp>,
"time": <Unix Timestamp>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "remove_schedule_ack",
"state": "Schema <Schedule ID> borttaget framgångsrikt",
"responseCode": 0
}
}
8. Hämta Webbplatsens Feedback (get_feedback
)
Hämtar detaljerad feedback om systemets tillstånd.
{
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"time": <Unix Timestamp>,
"message_type": "get_feedback",
"fields": {}
}
Response (Success):
Standard Schema Svarsformat
{
"id": <Schedule ID>,
"device_type": "<Device Type>",
"node_id": "<Node ID>" (Valfritt),
"start_time": <Unix Timestamp>,
"end_time": <Unix Timestamp>,
"policy": "<Schedule Policy>",
"power_setpoint_w": <Setpoint in watts>,
"created_at": <Unix Timestamp>
}
Komponenttyper och Policys
För detaljer om tillgängliga komponenter och policies som kan schemaläggas, se MQTT Komponenter och Policies avsnittet i Live MQTT Kontroll dokumentationen.
Enhetsspecifika scheman kan skickas med det valfria node_id
fältet, vilket refererar till nod-ID:n för den kontrollerbara enheten.
Felhantering
Alla meddelanden kan returnera ett fel-svar med responseCode: 1
när ett fel uppstår:
{
"requestTime": <Unix Timestamp>,
"time": <Unix Timestamp>,
"siteNodeId": "<Controller SN>_site_0",
"data": {
"message_type": "<Message Type>_ack",
"error": <Error Body>,
"responseCode": 1
}
}
När ett orelaterat fel uppstår kommer meddelandets typ att vara (general_error
).
Vanliga fel inkluderar:
- Schemaöverlappning med befintliga scheman
- Ogiltigt tidsintervall
- Enhetstyp hittades inte
- Schema-ID hittades inte
- Ogiltig policy för enhetstyp
Regler för Schemahantering
- Överlappningsregler
- Scheman får inte överlappa för samma enhetstyp
- Scheman får inte överlappa för samma enhet
- Scheman för samma enhet och enhetstyp får inte överlappa
- Befintliga, överlappande scheman kommer att raderas om variabeln
replace_overlap
är inställd påTrue
när ett nytt schema skapas.
- Varje schema måste ha:
- En giltig enhetstyp
- En starttid (Unix-tidsstämpel)
- En sluttid (Unix-tidsstämpel)
- En policy (som matchar tillgängliga policies för enhetstypen)
- En effektinställning (för policies som kräver det)
- Starttiden måste vara före sluttiden
- Starttiden måste vara minst
fem
minuter in i framtiden - Scheman kan endast tas bort om de börjar minst
fem
minuter in i framtiden - Scheman kan ställas in för olika enhetstyper oberoende av varandra
- Systemet tillämpar automatiskt den lämpliga policyn när ett schema blir aktivt